"use strict";
var __assign = (this && this.__assign) || function () {
	__assign = Object.assign || function (t) {
		for (var s, i = 1, n = arguments.length; i < n; i++) {
			s = arguments[i];
			for (var p in s)
				if (Object.prototype.hasOwnProperty.call(s, p))
					t[p] = s[p];
		}
		return t;
	};
	return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
	function adopt(value) {
		return value instanceof P ? value : new P(function (resolve) {
			resolve(value);
		});
	}
	return new(P || (P = Promise))(function (resolve, reject) {
		function fulfilled(value) {
			try {
				step(generator.next(value));
			} catch (e) {
				reject(e);
			}
		}

		function rejected(value) {
			try {
				step(generator["throw"](value));
			} catch (e) {
				reject(e);
			}
		}

		function step(result) {
			result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
		}
		step((generator = generator.apply(thisArg, _arguments || [])).next());
	});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
	var _ = {
			label: 0,
			sent: function () {
				if (t[0] & 1) throw t[1];
				return t[1];
			},
			trys: [],
			ops: []
		},
		f, y, t, g;
	return g = {
		next: verb(0),
		"throw": verb(1),
		"return": verb(2)
	}, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
		return this;
	}), g;

	function verb(n) {
		return function (v) {
			return step([n, v]);
		};
	}

	function step(op) {
		if (f) throw new TypeError("Generator is already executing.");
		while (_) try {
			if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
			if (y = 0, t) op = [op[0] & 2, t.value];
			switch (op[0]) {
				case 0:
				case 1:
					t = op;
					break;
				case 4:
					_.label++;
					return {
						value: op[1], done: false
					};
				case 5:
					_.label++;
					y = op[1];
					op = [0];
					continue;
				case 7:
					op = _.ops.pop();
					_.trys.pop();
					continue;
				default:
					if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
						_ = 0;
						continue;
					}
					if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
						_.label = op[1];
						break;
					}
					if (op[0] === 6 && _.label < t[1]) {
						_.label = t[1];
						t = op;
						break;
					}
					if (t && _.label < t[2]) {
						_.label = t[2];
						_.ops.push(op);
						break;
					}
					if (t[2]) _.ops.pop();
					_.trys.pop();
					continue;
			}
			op = body.call(thisArg, _);
		} catch (e) {
			op = [6, e];
			y = 0;
		} finally {
			f = t = 0;
		}
		if (op[0] & 5) throw op[1];
		return {
			value: op[0] ? op[1] : void 0,
			done: true
		};
	}
};
exports.__esModule = true;
var mobx_miniprogram_1 = require("mobx-miniprogram");
var survey_service_1 = require("../services/survey.service");
var question_1 = require("./question");
exports["default"] = (0, mobx_miniprogram_1.observable)({
	current: 0,
	list: [],
	reportList: [],
	initReportList: function (member_id) {
		return __awaiter(this, void 0, void 0, function () {
			var res;
			return __generator(this, function (_a) {
				switch (_a.label) {
					case 0:
						return [4 /*yield*/ , (0, survey_service_1.getSurveyList)({
							member_id: member_id,
							pageNumber: 1,
							pageSize: 100
						})];
					case 1:
						res = _a.sent();
						this.reportList = res.data.list;
						return [2 /*return*/ ];
				}
			});
		});
	},
	addReport: function (item) {
		var reportList = this.reportList.slice(0);
		this.reportList = [item].concat(reportList);
	},
	removeReport: function (index) {
		this.reportList = this.reportList.filter(function (val, key) {
			return key != index;
		});
	},
	initList: function () {
		if (this.list.length > 0) {
			return;
		}
		this.list = this.buildList();
	},
	buildList: function () {
		var list = [];
		var listIndex = 0;
		question_1["default"].forEach(function (val) {
			if (val.startup) {
				list.push(__assign(__assign({}, val), {
					realIndex: listIndex++
				}));
			} else {
				val.list &&
					val.list.forEach(function (item, index) {
						var realTotal = val.list ? val.list.length : 0;
						list.push(__assign({
							realIndex: listIndex++,
							moduleTotal: val.moduleTotal || realTotal,
							moduleIndex: item.indexOfModule || index
						}, item));
					});
			}
		});
		return list;
	},
	resetList: function () {
		this.list = this.buildList();
	},
	changeFieldValue: function (value, index, key) {
		// mobx转数组
		var targetList = this.list.slice(0);
		// 多值特殊处理（身高，体重）
		if (key !== undefined) {
			var item = targetList[index];
			var subItem = item.sublist[key];
			subItem.value = value;
			targetList[index] = item;
		} else {
			targetList[index].value = value;
		}
		this.list = targetList;
	},
	changeCurrent: function (index) {
		this.current = index;
	}
});